<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 之前使用的数据结构：数组 对象
        // set是一种新的数据结构
        // set是一个构造函数，用于创建set的实例对象

        // 创建一个空的set实例
        let s1 = new Set();
        console.log(s1);
        console.log(typeof s1);


        // 创建一个有值的set实例
        let s2 = new Set([1,2,3]);
        console.log(s2);

        // set 类似于数组 ， Set 中的成员都必须是唯一的！如果出现重复的会自动去重
        let s3  = new  Set ([1,23,4,5,6,7,3,4,5,6,3]);
        console.log(s3);

        console.log(s3.size);
        s3.size=0;
        console.log(s3.size);//Set的size属性是可读属性，不能修改

        // 添加一个属性add
        s3.add(78);
        console.log(s3);

        // 删除一个值
        s3.delete(3);
        console.log(s3);

        // 清除所有的值
        // s3.clear()

        //查找这个数据里面是否有23这个属性，返回的是一个布尔值
        console.log(s3.has(23));

        // Set 不具备下标索引
        console.log(s3[0]);
    
        // Set底层优化了算法，遍历效率提高

        console.log(...s3); //可以被展开运算符展开

        s3.forEach(vale=>console.log(vale))

        // 获取对象的所有的可以枚举的值
        let res1 = s3.keys();
        // 获取对象所有可枚举的键
        let res2 = s3.values();
        console.log(res2);
        console.log(res1);
    </script>
</body>
</html>